/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.ejb;

import com.entidades.Cliente;
import com.entidades.GrupoContato;
import com.entidades.enumerandos.PlanoClienteEnum;
import com.entidades.Usuario;
import java.util.List;
import javax.ejb.Stateless;
import javax.ejb.TransactionManagement;
import javax.ejb.TransactionManagementType;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

/**
 *
 * @author @
 */
@Stateless
public class ClienteBean implements ClienteLocal, ClienteRemote {

    @PersistenceContext
    EntityManager em;

    public void adicionarCliente(Cliente c, Usuario u) {
             c.setPlano(PlanoClienteEnum.PRE_PAGO);
             c.setSaldoSms(0);
            em.persist(c); //TODO adicionar transação

            //Usuário master criando
            //u.setEmail(u.getLogin());
            u.setNome(c.getNome());
            u.setCliente(c); //TODO definir politica de grupo
            em.persist(u);
            
            //criando grupo comun
            
            GrupoContato grupoPadrao = new GrupoContato();
            grupoPadrao.setCliente(c);
            grupoPadrao.setNome("...");

            em.persist(grupoPadrao);
        
    }

    public void adicionarClienteEspecial(Cliente c, Usuario u){ //TODO Refatorar redundancia. 
        c.setPlano(PlanoClienteEnum.POS_PAGO);
            em.persist(c); //TODO adicionar transação

            //Usuário master criando
            //u.setEmail(u.getLogin());
            u.setNome(c.getNome());
            u.setCliente(c); //TODO definir politica de grupo
            em.persist(u);

            //criando grupo comun

            GrupoContato grupoPadrao = new GrupoContato();
            grupoPadrao.setCliente(c);
            grupoPadrao.setNome("...");
    }

    public Cliente findById(Long id){
        return em.find(Cliente.class, id);

    }

      public List<Cliente> findAll() {
        Query query = em.createQuery("Select c from Cliente c");
        return query.getResultList();
    }
     
}
